#ifndef CSTRING_H
#define CSTRING_H

#include "ncgraph.h"

#define textLEFT      0
#define textRIGHT     1
#define textCENTER    2

#define IS12	12
#define IS16	16
#define IS24	24
#define IS32	32
#define IS48	48

#define HLib12  2 //12点阵汉字库
#define HLib16  4 //16点阵汉字库

#define CLib12  1 //12点阵ASC字库
#define CLib16  3 //16点阵ASC字库
#define WLib24  5 //24点阵windows字库
#define WLib32  6 //32点阵windows字库
#define WLib48  7 //48点阵windows字库

extern void cstr_init(void);
extern void cstr_exit(void);

extern void cstr_out_line(Bit16 x, Bit16 y, Bit16 right, Bit8 *txt, Bit8 fontsize = IS16, 
						  Bit16 fontcolor = COLOR_TEXT, Bit16 backcolor = COLOR_BACK, 
						  Bit16 gap = 0, Bit8 *oldstr = NULL, Bit16 changecolor = -1, 
						  Bit16 commentcolor = -1);

extern void cstr_out_mul_line(Bit16 x, Bit16 y, Bit16 width, Bit16 height, Bit8 *txt,
							  Bit16 fontcolor = COLOR_TEXT, Bit16 backcolor = COLOR_BACK, 
							  Bit8 align = textCENTER, Bit8 fontsize = IS16, 
							  Bit8 fillstyle = SOLID_FILL);

extern void cstr_out_rect(SRect *rect, Bit8 *txt, Bit16 fontcolor = COLOR_TEXT, 
							  Bit16 backcolor = COLOR_BACK, Bit8 align = textCENTER, 
							  Bit8 fontsize = IS16, Bit8 fillstyle = SOLID_FILL);

///////////////////////////////////////////////////////////////////////////////
//
//    Bit8 is_char(uBit16 key)
//
//    功能:
//				判断一个键值是否为字符
//
//    参数:
//				key: 键值
//
//    描述:
//				判断一个键值是否为字符
//
//	  返回：
//				1 字符
//				0 否
//
//////////////////////////////////////////////////////////////////////////
extern Bit8 is_alpha(uBit16 key);

///////////////////////////////////////////////////////////////////////////////
//
//    Bit8 is_digit(uBit16 key)
//
//    功能:
//				判断一个键值是否为数字
//
//    参数:
//				key: 键值
//
//    描述:
//				判断一个键值是否为数字
//
//	  返回：
//				1 字符
//				0 否
//
//////////////////////////////////////////////////////////////////////////
extern Bit8 is_digit(uBit16 key);

///////////////////////////////////////////////////////////////////////////////
//
//    Bit8 is_num(uBit16 key)
//
//    功能：  
//			判断数字（包括负号和小数点）
//			 
//    参数：
//			key ：键值
//
//    描述：
//			
//
//	  返回： 
//			1：数字（包括负号和小数点）
//			0：否
//
//////////////////////////////////////////////////////////////////////////
extern Bit8 is_num(uBit16 key);

///////////////////////////////////////////////////////////////////////////////
//
//   void long_to_char(Bit32 pos, Bit16 sw, Bit16 prec, Bit8 *buf)
//
//
//    功能:
//                  将整形转化为字符串
//
//    参数:
//                  pos：输入的整形值
//                	sw: 字符串的总长度
//                  prec：小数点后面的位数
//                  buf：输出的字符串
//
//    描述:
//                  现在目前为止处理的整形长度只能为20
//                  
//
//////////////////////////////////////////////////////////////////////////
extern void long_to_char(Bit32 pos, Bit16 sw, Bit16 prec, Bit8 *buf);

#endif